package lx2;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

//客户端：发送一条数据，接收服务端反馈的消息并打印
//服务器：接收数据并打印，再给客户端反馈消息
public class Sever {
    public static void main(String[] args) throws IOException {
        //创建服务端对象
        ServerSocket ss = new ServerSocket(1000);
        //等待客服端发送数据，连接成功返回一个Socket对象
        Socket socket = ss.accept();
        System.out.println("连接成功");
        //接收客服端发送的数据并且读取出来
        InputStreamReader isr = new InputStreamReader(socket.getInputStream());
        int b;
        /*
        细节：
        read方法会从连接通道里面读取数据
        但是，需要一个结束标记，此处的循环才会结束
        否则，程序会一直停在read方法这里，等待读取下面的的数据
        读到了结束标记然后结束循环
         */
        while ((b = isr.read()) != -1) {
            System.out.print((char) b);
        }
        //4.给客服端反馈消息 现在是服务器发送消息给客服端
        String str = "数据读取完毕";
        OutputStream os = socket.getOutputStream();
        os.write(str.getBytes());
        //关闭资源
        socket.close();//断开了与客服端的连接
        ss.close();//关闭了服务端

    }
}
